package br.com.empresa.dao;

import br.com.empresa.modelo.*;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

public class AlunoDao {
	private static final String INSERT_ALUNO = "insert into pessoafisica "
			+ "(idcodigo,nome,rg,cpf,tipopessoa,telefone,endereco,turma_al,idade_al,periodo_al)"
			+ "values(sq_cod_pesfis.nextval,?,?,?,?,?,?,?,?,?)";
	private static final String LIST_ALUNO = "select * from pessoafisica where tipopessoa = 'A'";
	
	public void inserir(Aluno al){
		Connection con = null;
		try {
			con = FabricaConexao.getConexao();
			PreparedStatement pstm = con.prepareStatement(INSERT_ALUNO);
			pstm.setString(1,al.getNome());
			pstm.setString(2,al.getRG());
			pstm.setString(3,al.getCPF());			
			pstm.setString(4,al.getTipoPessoa());
			pstm.setString(5,al.getTelefone());
			pstm.setString(6,al.getEndereco());
			pstm.setString(7,al.getTurma());
			pstm.setInt(8,al.getIdade());
			pstm.setString(9,al.getPeriodo());
			
			pstm.execute();
			JOptionPane.showMessageDialog(null,"Aluno inserido corretamente!");
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null,"Erro ao inserir um Aluno na base de dados." + e.getMessage());
		}finally{
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
	}
	
	public List<Aluno> listar(){
		Connection con = null;
		
		try {
			con = FabricaConexao.getConexao();
			
			PreparedStatement pstm = con.prepareStatement(LIST_ALUNO);
			ResultSet rs = pstm.executeQuery();
			List<Aluno> alunos = new ArrayList<>();
			
			while(rs.next()){
				
				Aluno al = new Aluno();
				al.setCodigo(rs.getInt("idcodigo"));
				al.setNome(rs.getString("nome"));
				al.setRG(rs.getString("rg"));
				al.setCPF(rs.getString("cpf"));
				al.setTelefone(rs.getString("telefone"));
				al.setTipoPessoa();				
				alunos.add(al);
				
			}
			return alunos;
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null,"Erro ao listar alunos da base de dados." + e.getMessage());
		}finally{
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}return null;
		
	}
	

}
